// 给定一组不含重复元素的整数数组 nums，返回该数组所有可能的子集（幂集）。
// 说明：解集不能包含重复的子集。
// 思路，回溯
// 和之前的组合问题不同，子集相当于把所有子节点记录下来，需要遍历整颗树，所以不需要剪枝
function subsets(nums) {
    let result = []
    let path = []
    function backtracking(startIndex) {
        if (startIndex > nums.length) {
            return
        }
        result.push([...path])
        for (let i = startIndex; i < nums.length; i++) {
            path.push(nums[i])
            backtracking(i + 1)
            path.pop()
        }
    }
    backtracking(0)
    return result
}

nums = [1,2,3]
console.log(subsets(nums))